using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._GeoAnalyticsServerTools._DataEnrichment
{
    /// <summary>
    /// <para>Calculate Motion Statistics</para>
    /// <para>Calculates motion statistics for points in a time-enabled feature class.</para>
    /// <para>计算启用时间的要素类中点的运动统计数据。</para>
    /// </summary>    
    [DisplayName("Calculate Motion Statistics")]
    public class CalculateMotionStatistics : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CalculateMotionStatistics()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_input_layer">
        /// <para>Input Layer</para>
        /// <para>The time-enabled point features on which motion statistics will be calculated.</para>
        /// <para>将计算运动统计数据的启用时间的点特征。</para>
        /// </param>
        /// <param name="_output_name">
        /// <para>Output Name</para>
        /// <para>The name of the result layer.</para>
        /// <para>结果图层的名称。</para>
        /// </param>
        /// <param name="_track_fields">
        /// <para>Track Fields</para>
        /// <para>One or more fields used to identify distinct entities.</para>
        /// <para>用于标识不同实体的一个或多个字段。</para>
        /// </param>
        /// <param name="_track_history_window">
        /// <para>Track History Window</para>
        /// <para>The number of observations (including the current observation) that will be used for summary statistics. The default value is 3, which means that the summary statistics will be calculated at each point in a track using the current observation and the previous two observations. This parameter does not affect instantaneous statistics or idle classification.</para>
        /// <para>将用于汇总统计的观测值（包括当前观测值）的数量。默认值为 3，这意味着将使用当前观测值和前两个观测值在轨迹中的每个点计算汇总统计数据。该参数不影响瞬时统计或空闲分类。</para>
        /// </param>
        public CalculateMotionStatistics(object _input_layer, object _output_name, List<object> _track_fields, long? _track_history_window)
        {
            this._input_layer = _input_layer;
            this._output_name = _output_name;
            this._track_fields = _track_fields;
            this._track_history_window = _track_history_window;
        }
        public override string ToolboxName => "GeoAnalytics Server Tools";

        public override string ToolName => "Calculate Motion Statistics";

        public override string CallName => "geoanalytics.CalculateMotionStatistics";

        public override List<string> AcceptEnvironments => ["extent", "outputCoordinateSystem", "workspace"];

        public override object[] ParameterInfo => [_input_layer, _output_name, _track_fields, _track_history_window, _motion_statistics, _distance_method.GetGPValue(), _idle_dist_tolerance, _idle_time_tolerance, _time_boundary_split, _time_boundary_reference, _distance_unit.GetGPValue(), _duration_unit.GetGPValue(), _speed_unit.GetGPValue(), _acceleration_unit.GetGPValue(), _elevation_unit.GetGPValue(), _data_store.GetGPValue(), _output];

        /// <summary>
        /// <para>Input Layer</para>
        /// <para>The time-enabled point features on which motion statistics will be calculated.</para>
        /// <para>将计算运动统计数据的启用时间的点特征。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _input_layer { get; set; }


        /// <summary>
        /// <para>Output Name</para>
        /// <para>The name of the result layer.</para>
        /// <para>结果图层的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _output_name { get; set; }


        /// <summary>
        /// <para>Track Fields</para>
        /// <para>One or more fields used to identify distinct entities.</para>
        /// <para>用于标识不同实体的一个或多个字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Track Fields")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _track_fields { get; set; }


        /// <summary>
        /// <para>Track History Window</para>
        /// <para>The number of observations (including the current observation) that will be used for summary statistics. The default value is 3, which means that the summary statistics will be calculated at each point in a track using the current observation and the previous two observations. This parameter does not affect instantaneous statistics or idle classification.</para>
        /// <para>将用于汇总统计的观测值（包括当前观测值）的数量。默认值为 3，这意味着将使用当前观测值和前两个观测值在轨迹中的每个点计算汇总统计数据。该参数不影响瞬时统计或空闲分类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Track History Window")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public long? _track_history_window { get; set; }


        /// <summary>
        /// <para>Motion Statistics</para>
        /// <para><xdoc>
        ///   <para>Specifies the group containing the statistics to be calculated and written to the result. If no value is provided, all statistics from all groups will be calculated.</para>
        ///   <bulletList>
        ///     <bullet_item>Distance—The distance between the current and previous observation and the maximum, minimum, average, and total distance in the track history window will be calculated.</bullet_item><para/>
        ///     <bullet_item>Duration—The duration between the current and previous observation and the maximum, minimum, average, and total duration in the track history window will be calculated.</bullet_item><para/>
        ///     <bullet_item>Speed—The speed of travel between the current and previous observation and the maximum, minimum, and average speed in the track history window will be calculated.</bullet_item><para/>
        ///     <bullet_item>Acceleration—The acceleration between the current speed and the previous speed and the maximum, minimum, and average acceleration in the track history window will be calculated.</bullet_item><para/>
        ///     <bullet_item>Elevation—The current elevation, the elevation change between the current and previous observation, and the maximum, minimum, average, and total elevation change in the track history window will be calculated.</bullet_item><para/>
        ///     <bullet_item>Slope—The slope between the current and previous observation and the maximum, minimum, and average slope in the track history window will be calculated.</bullet_item><para/>
        ///     <bullet_item>Idle—Whether an entity is currently idling, as well as the percentage idle time and total idle time in the track history window will be calculated.</bullet_item><para/>
        ///     <bullet_item>Bearing—The angle of travel between the previous observation and the current observation will be calculated.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定包含要计算并写入结果的统计信息的组。如果未提供任何值，则将计算所有组的所有统计数据。</para>
        ///   <bulletList>
        ///     <bullet_item>距离—将计算当前观测点与先前观测点之间的距离以及轨迹历史记录窗口中的最大距离、最小距离、平均距离和总距离。</bullet_item><para/>
        ///     <bullet_item>持续时间—将计算当前观测点和上一个观测点之间的持续时间以及轨迹历史记录窗口中的最大持续时间、最小持续时间、平均持续时间和总持续时间。</bullet_item><para/>
        ///     <bullet_item>速度—将计算当前观测点和上一个观测点之间的行驶速度以及轨迹历史记录窗口中的最大、最小和平均速度。</bullet_item><para/>
        ///     <bullet_item>加速度—将计算当前速度与先前速度之间的加速度以及轨迹历史记录窗口中的最大、最小和平均加速度。</bullet_item><para/>
        ///     <bullet_item>高程—将计算轨迹历史窗口中的当前高程、当前观测点与上一个观测点之间的高程变化以及最大、最小、平均和总高程变化。</bullet_item><para/>
        ///     <bullet_item>坡度—将计算当前观测点和先前观测点之间的坡度以及轨迹历史记录窗口中的最大坡度、最小坡度和平均坡度。</bullet_item><para/>
        ///     <bullet_item>空闲—将计算实体当前是否处于空闲状态，以及轨迹历史记录窗口中的空闲时间百分比和总空闲时间。</bullet_item><para/>
        ///     <bullet_item>方位角—将计算上一个观测点和当前观测点之间的行进角。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Motion Statistics")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _motion_statistics { get; set; } = null;


        /// <summary>
        /// <para>Distance Method</para>
        /// <para><xdoc>
        ///   <para>Specifies the distance measurement method that will be used when calculating motion statistics.</para>
        ///   <bulletList>
        ///     <bullet_item>Geodesic—Geodesic distance will be used.</bullet_item><para/>
        ///     <bullet_item>Planar—Planar distance will be used. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定计算运动统计数据时将使用的距离测量方法。</para>
        ///   <bulletList>
        ///     <bullet_item>测地线—将使用测地线距离。</bullet_item><para/>
        ///     <bullet_item>Planar—将使用平面距离。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Method")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _distance_method_value? _distance_method { get; set; } = null;

        public enum _distance_method_value
        {
            /// <summary>
            /// <para>Planar</para>
            /// <para>Planar—Planar distance will be used. This is the default.</para>
            /// <para>Planar—将使用平面距离。这是默认设置。</para>
            /// </summary>
            [Description("Planar")]
            [GPEnumValue("PLANAR")]
            _PLANAR,

            /// <summary>
            /// <para>Geodesic</para>
            /// <para>Geodesic—Geodesic distance will be used.</para>
            /// <para>测地线—将使用测地线距离。</para>
            /// </summary>
            [Description("Geodesic")]
            [GPEnumValue("GEODESIC")]
            _GEODESIC,

        }

        /// <summary>
        /// <para>Idle Distance Tolerance</para>
        /// <para>The maximum distance that two sequential points in a track can be apart and still be considered idle. This parameter is used with the Idle Time Tolerance parameter to determine if an entity is idling. The Idle Distance Tolerance parameter is required if the Idle statistic group is specified in the Motion Statistics parameter or if statistics in all the groups will be calculated.</para>
        /// <para>轨道中两个连续点可以分开并仍被视为空闲的最大距离。此参数与空闲时间容差参数一起使用，以确定实体是否处于空闲状态。如果在“运动统计”参数中指定了“空闲”统计组，或者将计算所有组中的统计信息，则“空闲距离容差”参数是必需的。</para>
        /// <para>单位： Feet | Yards | Miles | NauticalMiles | Meters | Kilometers </para>
        /// </summary>
        [DisplayName("Idle Distance Tolerance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public string? _idle_dist_tolerance { get; set; } = null;


        /// <summary>
        /// <para>Idle Time Tolerance</para>
        /// <para>The minimum duration that two sequential points in a track must be near each other to be considered idle. This parameter is used with the Idle Distance Tolerance parameter to determine if an entity is idling. The Idle Time Tolerance parameter is required if the Idle statistic group is specified in the Motion Statistics parameter or if statistics in all the groups will be calculated.</para>
        /// <para>轨迹中的两个连续点必须彼此靠近才能被视为空闲的最短持续时间。此参数与空闲距离容差参数一起使用，以确定实体是否处于空闲状态。如果在“运动统计”参数中指定了“空闲”统计信息组，或者将计算所有组中的统计信息，则需要“空闲时间容差”参数。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Idle Time Tolerance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _idle_time_tolerance { get; set; } = null;


        /// <summary>
        /// <para>Time Boundary Split</para>
        /// <para>A time span to split the input data into for analysis. A time boundary allows you to analyze values within a defined time span. For example, if you use a time boundary of 1 day, starting on January 1, 1980, tracks will be split at the beginning of every day. This parameter is only available with ArcGIS Enterprise 10.7 and later.</para>
        /// <para>将输入数据拆分为以进行分析的时间跨度。时间边界允许您在定义的时间跨度内分析值。例如，如果使用 1 天的时间边界，则从 1980 年 1 月 1 日开始，轨迹将在每天开始时进行拆分。此参数仅适用于 ArcGIS Enterprise 10.7 及更高版本。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Boundary Split")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _time_boundary_split { get; set; } = null;


        /// <summary>
        /// <para>Time Boundary Reference</para>
        /// <para>The reference time used to split the input data into for analysis. Time boundaries will be created for the entire span of the data, and the reference time does not need to occur at the start. If no reference time is specified, January 1, 1970, is used. This parameter is only available with ArcGIS Enterprise 10.7 and later.</para>
        /// <para>用于将输入数据拆分为用于分析的参考时间。将为数据的整个跨度创建时间边界，并且参考时间不需要在开始时出现。如果未指定参考时间，则使用 1970 年 1 月 1 日。此参数仅适用于 ArcGIS Enterprise 10.7 及更高版本。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Boundary Reference")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _time_boundary_reference { get; set; } = null;


        /// <summary>
        /// <para>Distance Unit</para>
        /// <para><xdoc>
        ///   <para>Specifies the unit of measure for distance values in the output feature class.</para>
        ///   <bulletList>
        ///     <bullet_item>Meters—The unit of measure will be meters. This is the default.</bullet_item><para/>
        ///     <bullet_item>Kilometers—The unit of measure will be kilometers.</bullet_item><para/>
        ///     <bullet_item>Miles—The unit of measure will be miles.</bullet_item><para/>
        ///     <bullet_item>Nautical Miles—The unit of measure will be nautical miles.</bullet_item><para/>
        ///     <bullet_item>Yards—The unit of measure will be yards.</bullet_item><para/>
        ///     <bullet_item>Feet—The unit of measure will be feet.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输出要素类中距离值的测量单位。</para>
        ///   <bulletList>
        ///     <bullet_item>米—测量单位为米。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>千米—测量单位为千米。</bullet_item><para/>
        ///     <bullet_item>英里—测量单位为英里。</bullet_item><para/>
        ///     <bullet_item>海里—测量单位为海里。</bullet_item><para/>
        ///     <bullet_item>码—测量单位为码。</bullet_item><para/>
        ///     <bullet_item>英尺—测量单位为英尺。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Unit")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _distance_unit_value? _distance_unit { get; set; } = null;

        public enum _distance_unit_value
        {
            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—The unit of measure will be kilometers.</para>
            /// <para>千米—测量单位为千米。</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("KILOMETERS")]
            _KILOMETERS,

            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—The unit of measure will be meters. This is the default.</para>
            /// <para>米—测量单位为米。这是默认设置。</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("METERS")]
            _METERS,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—The unit of measure will be miles.</para>
            /// <para>英里—测量单位为英里。</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("MILES")]
            _MILES,

            /// <summary>
            /// <para>Nautical Miles</para>
            /// <para>Nautical Miles—The unit of measure will be nautical miles.</para>
            /// <para>海里—测量单位为海里。</para>
            /// </summary>
            [Description("Nautical Miles")]
            [GPEnumValue("NAUTICAL_MILES")]
            _NAUTICAL_MILES,

            /// <summary>
            /// <para>Yards</para>
            /// <para>Yards—The unit of measure will be yards.</para>
            /// <para>码—测量单位为码。</para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("YARDS")]
            _YARDS,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—The unit of measure will be feet.</para>
            /// <para>英尺—测量单位为英尺。</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("FEET")]
            _FEET,

        }

        /// <summary>
        /// <para>Duration Unit</para>
        /// <para><xdoc>
        ///   <para>Specifies the unit of measure for duration values in the output feature class.</para>
        ///   <bulletList>
        ///     <bullet_item>Years—The unit of measure will years.</bullet_item><para/>
        ///     <bullet_item>Months—The unit of measure will be months.</bullet_item><para/>
        ///     <bullet_item>Weeks—The unit of measure will be weeks.</bullet_item><para/>
        ///     <bullet_item>Days—The unit of measure will be days.</bullet_item><para/>
        ///     <bullet_item>Hours—The unit of measure will be hours.</bullet_item><para/>
        ///     <bullet_item>Minutes—The unit of measure will be minutes.</bullet_item><para/>
        ///     <bullet_item>Seconds—The unit of measure will be seconds. This is the default.</bullet_item><para/>
        ///     <bullet_item>Milliseconds—The unit of measure will be milliseconds.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输出要素类中持续时间值的测量单位。</para>
        ///   <bulletList>
        ///     <bullet_item>Years—度量单位为年。</bullet_item><para/>
        ///     <bullet_item>月—度量单位为月。</bullet_item><para/>
        ///     <bullet_item>周 - 度量单位为周。</bullet_item><para/>
        ///     <bullet_item>天—测量单位为天。</bullet_item><para/>
        ///     <bullet_item>小时—测量单位为小时。</bullet_item><para/>
        ///     <bullet_item>分钟—测量单位为分钟。</bullet_item><para/>
        ///     <bullet_item>秒 - 测量单位为秒。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>毫秒—测量单位为毫秒。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Duration Unit")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _duration_unit_value? _duration_unit { get; set; } = null;

        public enum _duration_unit_value
        {
            /// <summary>
            /// <para>Years</para>
            /// <para>Years—The unit of measure will years.</para>
            /// <para>Years—度量单位为年。</para>
            /// </summary>
            [Description("Years")]
            [GPEnumValue("YEARS")]
            _YEARS,

            /// <summary>
            /// <para>Months</para>
            /// <para>Months—The unit of measure will be months.</para>
            /// <para>月—度量单位为月。</para>
            /// </summary>
            [Description("Months")]
            [GPEnumValue("MONTHS")]
            _MONTHS,

            /// <summary>
            /// <para>Weeks</para>
            /// <para>Weeks—The unit of measure will be weeks.</para>
            /// <para>周 - 度量单位为周。</para>
            /// </summary>
            [Description("Weeks")]
            [GPEnumValue("WEEKS")]
            _WEEKS,

            /// <summary>
            /// <para>Days</para>
            /// <para>Days—The unit of measure will be days.</para>
            /// <para>天—测量单位为天。</para>
            /// </summary>
            [Description("Days")]
            [GPEnumValue("DAYS")]
            _DAYS,

            /// <summary>
            /// <para>Hours</para>
            /// <para>Hours—The unit of measure will be hours.</para>
            /// <para>小时—测量单位为小时。</para>
            /// </summary>
            [Description("Hours")]
            [GPEnumValue("HOURS")]
            _HOURS,

            /// <summary>
            /// <para>Minutes</para>
            /// <para>Minutes—The unit of measure will be minutes.</para>
            /// <para>分钟—测量单位为分钟。</para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("MINUTES")]
            _MINUTES,

            /// <summary>
            /// <para>Seconds</para>
            /// <para>Seconds—The unit of measure will be seconds. This is the default.</para>
            /// <para>秒 - 测量单位为秒。这是默认设置。</para>
            /// </summary>
            [Description("Seconds")]
            [GPEnumValue("SECONDS")]
            _SECONDS,

            /// <summary>
            /// <para>Milliseconds</para>
            /// <para>Milliseconds—The unit of measure will be milliseconds.</para>
            /// <para>毫秒—测量单位为毫秒。</para>
            /// </summary>
            [Description("Milliseconds")]
            [GPEnumValue("MILLISECONDS")]
            _MILLISECONDS,

        }

        /// <summary>
        /// <para>Speed Unit</para>
        /// <para><xdoc>
        ///   <para>Specifies the unit of measure for speed values in the output feature class.</para>
        ///   <bulletList>
        ///     <bullet_item>Meters Per Second—The unit of measure will be meters per second. This is the default.</bullet_item><para/>
        ///     <bullet_item>Miles Per Hour—The unit of measure will be miles per hour.</bullet_item><para/>
        ///     <bullet_item>Kilometers Per Hour—The unit of measure will be kilometers per hour.</bullet_item><para/>
        ///     <bullet_item>Feet Per Second—The unit of measure will be feet per second.</bullet_item><para/>
        ///     <bullet_item>Nautical Miles Per Hour—The unit of measure will be nautical miles per hour.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输出要素类中速度值的测量单位。</para>
        ///   <bulletList>
        ///     <bullet_item>米/秒—测量单位为米/秒。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>英里/小时—测量单位为英里/小时。</bullet_item><para/>
        ///     <bullet_item>公里/小时—测量单位为公里/小时。</bullet_item><para/>
        ///     <bullet_item>英尺/秒—测量单位为英尺/秒。</bullet_item><para/>
        ///     <bullet_item>海里/小时—测量单位为海里/小时。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Speed Unit")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _speed_unit_value? _speed_unit { get; set; } = null;

        public enum _speed_unit_value
        {
            /// <summary>
            /// <para>Meters Per Second</para>
            /// <para>Meters Per Second—The unit of measure will be meters per second. This is the default.</para>
            /// <para>米/秒—测量单位为米/秒。这是默认设置。</para>
            /// </summary>
            [Description("Meters Per Second")]
            [GPEnumValue("METERS_PER_SECOND")]
            _METERS_PER_SECOND,

            /// <summary>
            /// <para>Miles Per Hour</para>
            /// <para>Miles Per Hour—The unit of measure will be miles per hour.</para>
            /// <para>英里/小时—测量单位为英里/小时。</para>
            /// </summary>
            [Description("Miles Per Hour")]
            [GPEnumValue("MILES_PER_HOUR")]
            _MILES_PER_HOUR,

            /// <summary>
            /// <para>Kilometers Per Hour</para>
            /// <para>Kilometers Per Hour—The unit of measure will be kilometers per hour.</para>
            /// <para>公里/小时—测量单位为公里/小时。</para>
            /// </summary>
            [Description("Kilometers Per Hour")]
            [GPEnumValue("KILOMETERS_PER_HOUR")]
            _KILOMETERS_PER_HOUR,

            /// <summary>
            /// <para>Feet Per Second</para>
            /// <para>Feet Per Second—The unit of measure will be feet per second.</para>
            /// <para>英尺/秒—测量单位为英尺/秒。</para>
            /// </summary>
            [Description("Feet Per Second")]
            [GPEnumValue("FEET_PER_SECOND")]
            _FEET_PER_SECOND,

            /// <summary>
            /// <para>Nautical Miles Per Hour</para>
            /// <para>Nautical Miles Per Hour—The unit of measure will be nautical miles per hour.</para>
            /// <para>海里/小时—测量单位为海里/小时。</para>
            /// </summary>
            [Description("Nautical Miles Per Hour")]
            [GPEnumValue("NAUTICAL_MILES_PER_HOUR")]
            _NAUTICAL_MILES_PER_HOUR,

        }

        /// <summary>
        /// <para>Acceleration Unit</para>
        /// <para><xdoc>
        ///   <para>Specifies the unit of measure for acceleration values in the output feature class.</para>
        ///   <bulletList>
        ///     <bullet_item>Meters Per Second Squared—The unit of measure will be meters per second squared. This is the default.</bullet_item><para/>
        ///     <bullet_item>Feet Per Second Squared—The unit of measure will be feet per second squared.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输出要素类中加速度值的测量单位。</para>
        ///   <bulletList>
        ///     <bullet_item>米/秒平方—测量单位为米/秒平方。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>英尺/秒平方—测量单位为英尺/秒平方。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Acceleration Unit")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _acceleration_unit_value? _acceleration_unit { get; set; } = null;

        public enum _acceleration_unit_value
        {
            /// <summary>
            /// <para>Meters Per Second Squared</para>
            /// <para>Meters Per Second Squared—The unit of measure will be meters per second squared. This is the default.</para>
            /// <para>米/秒平方—测量单位为米/秒平方。这是默认设置。</para>
            /// </summary>
            [Description("Meters Per Second Squared")]
            [GPEnumValue("METERS_PER_SECOND_SQUARED")]
            _METERS_PER_SECOND_SQUARED,

            /// <summary>
            /// <para>Feet Per Second Squared</para>
            /// <para>Feet Per Second Squared—The unit of measure will be feet per second squared.</para>
            /// <para>英尺/秒平方—测量单位为英尺/秒平方。</para>
            /// </summary>
            [Description("Feet Per Second Squared")]
            [GPEnumValue("FEET_PER_SECOND_SQUARED")]
            _FEET_PER_SECOND_SQUARED,

        }

        /// <summary>
        /// <para>Elevation Unit</para>
        /// <para><xdoc>
        ///   <para>Specifies the unit of measure for elevation values in the output feature class.</para>
        ///   <bulletList>
        ///     <bullet_item>Meters—The unit of measure will be meters. This is the default.</bullet_item><para/>
        ///     <bullet_item>Kilometers—The unit of measure will be kilometers.</bullet_item><para/>
        ///     <bullet_item>Miles—The unit of measure will be miles.</bullet_item><para/>
        ///     <bullet_item>Nautical Miles—The unit of measure will be nautical miles.</bullet_item><para/>
        ///     <bullet_item>Yards—The unit of measure will be yards.</bullet_item><para/>
        ///     <bullet_item>Feet—The unit of measure will be feet.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输出要素类中高程值的测量单位。</para>
        ///   <bulletList>
        ///     <bullet_item>米—测量单位为米。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>千米—测量单位为千米。</bullet_item><para/>
        ///     <bullet_item>英里—测量单位为英里。</bullet_item><para/>
        ///     <bullet_item>海里—测量单位为海里。</bullet_item><para/>
        ///     <bullet_item>码—测量单位为码。</bullet_item><para/>
        ///     <bullet_item>英尺—测量单位为英尺。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Elevation Unit")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _elevation_unit_value? _elevation_unit { get; set; } = null;

        public enum _elevation_unit_value
        {
            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—The unit of measure will be kilometers.</para>
            /// <para>千米—测量单位为千米。</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("KILOMETERS")]
            _KILOMETERS,

            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—The unit of measure will be meters. This is the default.</para>
            /// <para>米—测量单位为米。这是默认设置。</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("METERS")]
            _METERS,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—The unit of measure will be miles.</para>
            /// <para>英里—测量单位为英里。</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("MILES")]
            _MILES,

            /// <summary>
            /// <para>Nautical Miles</para>
            /// <para>Nautical Miles—The unit of measure will be nautical miles.</para>
            /// <para>海里—测量单位为海里。</para>
            /// </summary>
            [Description("Nautical Miles")]
            [GPEnumValue("NAUTICAL_MILES")]
            _NAUTICAL_MILES,

            /// <summary>
            /// <para>Yards</para>
            /// <para>Yards—The unit of measure will be yards.</para>
            /// <para>码—测量单位为码。</para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("YARDS")]
            _YARDS,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—The unit of measure will be feet.</para>
            /// <para>英尺—测量单位为英尺。</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("FEET")]
            _FEET,

        }

        /// <summary>
        /// <para>Data Store</para>
        /// <para><xdoc>
        ///   <para>Specifies the ArcGIS Data Store where the output will be saved. The default is SPATIOTEMPORAL_DATA_STORE. All results stored in a spatiotemporal big data store will be stored in WGS84. Results stored in a relational data store will maintain their coordinate system.</para>
        ///   <bulletList>
        ///     <bullet_item>Spatiotemporal big data store—Output will be stored in a spatiotemporal big data store. This is the default.</bullet_item><para/>
        ///     <bullet_item>Relational data store—Output will be stored in a relational data store.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定将保存输出的 ArcGIS Data Store。默认值为 SPATIOTEMPORAL_DATA_STORE。存储在时空大数据存储中的所有结果都将存储在 WGS84 中。存储在关系数据存储中的结果将保留其坐标系。</para>
        ///   <bulletList>
        ///     <bullet_item>时空大数据存储 - 输出将存储在时空大数据存储中。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>关系数据存储 - 输出将存储在关系数据存储中。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Data Store")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _data_store_value? _data_store { get; set; } = null;

        public enum _data_store_value
        {
            /// <summary>
            /// <para>Spatiotemporal big data store</para>
            /// <para>Spatiotemporal big data store—Output will be stored in a spatiotemporal big data store. This is the default.</para>
            /// <para>时空大数据存储 - 输出将存储在时空大数据存储中。这是默认设置。</para>
            /// </summary>
            [Description("Spatiotemporal big data store")]
            [GPEnumValue("SPATIOTEMPORAL_DATA_STORE")]
            _SPATIOTEMPORAL_DATA_STORE,

            /// <summary>
            /// <para>Relational data store</para>
            /// <para>Relational data store—Output will be stored in a relational data store.</para>
            /// <para>关系数据存储 - 输出将存储在关系数据存储中。</para>
            /// </summary>
            [Description("Relational data store")]
            [GPEnumValue("RELATIONAL_DATA_STORE")]
            _RELATIONAL_DATA_STORE,

        }

        /// <summary>
        /// <para>Output Feature Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Feature Layer")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _output { get; set; }


        public CalculateMotionStatistics SetEnv(object extent = null, object outputCoordinateSystem = null, object workspace = null)
        {
            base.SetEnv(extent: extent, outputCoordinateSystem: outputCoordinateSystem, workspace: workspace);
            return this;
        }

    }

}